/*
    Carracci Systems - Carracci Server (openbam project)
    Copyright (C) 2007  Carracci Systems

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/



package org.openbam.core.expr;

import java.util.logging.Logger;
import java.util.logging.Level;

import org.openbam.core.Event;

public class Var extends Expression {
    static Logger log = Logger.getLogger(Var.class.toString());

    private String var;
	private Object value;
	
	public Var() {
		super();
		super.setName("Var");
	}

	public Object evaluate(Event event) {
		Object o = event.getAttributes().get(var);
		if (o != null) {
			value = o;
		}

        if (log.isLoggable(Level.FINER)) {
			log.finer(new StringBuilder().append(getName())
						.append("(").append(var).append(") = ")
						.append(o).toString());
		}

        return value;
	}

	
	/**
	 * @return the var
	 */
	public String getVar() {
		return var;
	}


	/**
	 * @param var the var to set
	 */
	public void setVar(String var) {
		this.var = var;
	}


	public Object getValue() {
		return value;
	}
	
	public String toString() {
		return (new StringBuilder("\"")).append(var).append("\"").toString();
	}

	public IExpression newInstance() {
		Var v =  new Var();
		v.setVar(this.var);
		return v;
	}

}
